//package com.ygl.example.service.rule;
//
//import com.netflix.client.config.IClientConfig;
//import com.netflix.loadbalancer.AbstractServerPredicate;
//import com.netflix.loadbalancer.CompositePredicate;
//import com.netflix.loadbalancer.ZoneAvoidanceRule;
//
//public class DiscoveryEnabledZoneAvoidanceRule extends ZoneAvoidanceRule {
//
//    private DiscoveryEnabledZoneAvoidancePredicate discoveryEnabledZoneAvoidancePredicate;
//
//    private CompositePredicate compositePredicate;
//
//    public DiscoveryEnabledZoneAvoidanceRule() {
//        super();
//        discoveryEnabledZoneAvoidancePredicate = new DiscoveryEnabledZoneAvoidancePredicate(this,null);
//        compositePredicate = createCompositePredicate(discoveryEnabledZoneAvoidancePredicate);
//    }
//
//    private CompositePredicate createCompositePredicate(DiscoveryEnabledZoneAvoidancePredicate discoveryEnabledPredicate) {
//        return CompositePredicate.withPredicates(discoveryEnabledPredicate)
//                // .addFallbackPredicate(availabilityPredicate)
//                // .addFallbackPredicate(AbstractServerPredicate.alwaysTrue())
//                .build();
//    }
//
//    @Override
//    public void initWithNiwsConfig(IClientConfig clientConfig) {
//        super.initWithNiwsConfig(clientConfig);
//        discoveryEnabledZoneAvoidancePredicate = new DiscoveryEnabledZoneAvoidancePredicate(this, clientConfig);
//        compositePredicate = createCompositePredicate(discoveryEnabledZoneAvoidancePredicate);
//    }
//
//    @Override
//    public AbstractServerPredicate getPredicate() {
//        return compositePredicate;
//    }
//
//    public DiscoveryEnabledZoneAvoidancePredicate getDiscoveryEnabledZoneAvoidancePredicate() {
//        return discoveryEnabledZoneAvoidancePredicate;
//    }
//}
